#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
本土化提示词配置
针对中国A股市场特色优化的分析提示词
"""

from typing import Dict, List, Any
from datetime import datetime

class LocalizedPrompts:
    """本土化提示词管理器"""
    
    @staticmethod
    def get_china_market_context() -> str:
        """获取中国市场背景信息"""
        return """
## 🇨🇳 中国A股市场特色分析框架

### 市场特征
- **政策敏感性**: A股市场对政策变化反应敏感，需重点关注监管政策、产业政策变化
- **散户主导**: 散户投资者占比较高，市场情绪波动较大，羊群效应明显
- **板块轮动**: 资金在不同板块间快速轮动，热点切换频繁
- **季节性特征**: 春季躁动、五穷六绝七翻身、金九银十等季节性规律
- **外资影响**: 北向资金流入流出对市场情绪和个股表现影响显著

### 监管环境
- **涨跌停限制**: 主板±10%，创业板/科创板±20%
- **T+1交易制度**: 当日买入次日才能卖出
- **融资融券**: 两融余额变化反映市场情绪
- **减持新规**: 大股东减持对股价影响需重点关注

### 投资风格
- **价值投资**: 关注基本面，寻找低估值优质标的
- **成长投资**: 关注新兴产业，追求高成长性
- **主题投资**: 政策驱动的主题性投资机会
- **量化投资**: 基于数据和模型的系统化投资
"""
    
    @staticmethod
    def get_technical_analysis_prompt(market_data: Dict[str, Any]) -> str:
        """获取技术分析提示词"""
        base_prompt = LocalizedPrompts.get_china_market_context()
        
        prompt = f"""{base_prompt}

## 📊 技术分析要求

你是一位专业的A股技术分析师，请基于以下数据进行技术面分析：

### 核心指标解读
1. **RTSI (个股评级趋势强度指数)**: 综合技术指标，>70强势，50-70中性，<50弱势
2. **IRSI (行业相对强度指数)**: 行业轮动指标，>60强势行业，<40弱势行业
3. **MSCI (市场情绪综合指数)**: 市场情绪指标，>70过热，30-70正常，<30恐慌

### 分析维度
1. **趋势判断**: 基于MSCI和RTSI判断市场和个股趋势
2. **动量分析**: 结合5日动量和成交量变化
3. **强弱对比**: 个股相对行业、行业相对市场的强弱
4. **风险控制**: 基于波动率和技术位设置止损

### 中国市场技术特点
- **缺口理论**: A股市场缺口具有较强指导意义
- **量价关系**: 放量突破、缩量调整的规律性较强
- **支撑阻力**: 整数关口、前期高低点的心理作用明显
- **板块联动**: 同行业个股技术走势相关性较高

请提供结构化的技术分析，包括趋势判断、关键技术位、操作建议等。
"""
        
        return prompt
    
    @staticmethod
    def get_fundamental_analysis_prompt(market_data: Dict[str, Any]) -> str:
        """获取基本面分析提示词"""
        base_prompt = LocalizedPrompts.get_china_market_context()
        
        prompt = f"""{base_prompt}

## 🏢 基本面分析要求

你是一位专业的A股基本面分析师，请基于以下数据进行基本面分析：

### 宏观经济分析
1. **货币政策**: 央行政策取向对流动性和估值的影响
2. **财政政策**: 减税降费、基建投资等政策效应
3. **经济数据**: GDP、CPI、PMI等关键经济指标
4. **汇率影响**: 人民币汇率对进出口企业的影响

### 行业分析框架
1. **政策导向**: 国家产业政策对行业发展的支持力度
2. **景气周期**: 行业所处的景气周期阶段
3. **竞争格局**: 行业集中度、龙头企业优势
4. **估值水平**: 行业PE/PB相对历史和国际的比较

### 个股分析要点
1. **商业模式**: 盈利模式的可持续性和护城河
2. **财务质量**: 盈利能力、现金流、资产负债结构
3. **成长性**: 收入和利润增长的驱动因素
4. **估值合理性**: 相对估值和绝对估值的综合判断

### A股特色因素
- **国企改革**: 国有企业改革对相关标的的影响
- **并购重组**: 资产注入、借壳上市等资本运作
- **股东变化**: 大股东、实控人变更的影响
- **分红政策**: 高分红标的在A股的稀缺性价值

请提供结构化的基本面分析，包括宏观环境、行业前景、个股价值等。
"""
        
        return prompt
    
    @staticmethod
    def get_risk_management_prompt(market_data: Dict[str, Any]) -> str:
        """获取风险管理提示词"""
        base_prompt = LocalizedPrompts.get_china_market_context()
        
        prompt = f"""{base_prompt}

## ⚠️ 风险管理分析要求

你是一位专业的A股风险管理师，请基于以下数据进行风险分析：

### 系统性风险识别
1. **政策风险**: 监管政策变化、行业政策调整
2. **流动性风险**: 市场资金面紧张、北向资金流出
3. **估值风险**: 市场整体估值过高、泡沫风险
4. **外部风险**: 国际市场波动、地缘政治影响

### 个股风险评估
1. **基本面风险**: 业绩下滑、财务造假、经营困难
2. **技术面风险**: 技术破位、趋势恶化
3. **流动性风险**: 成交量萎缩、流通盘过小
4. **事件风险**: 黑天鹅事件、突发利空

### A股特有风险
1. **涨跌停风险**: 连续涨跌停导致的流动性风险
2. **退市风险**: ST、*ST股票的退市风险
3. **解禁风险**: 大股东减持、限售股解禁
4. **商誉减值**: 并购形成的商誉减值风险

### 风险控制措施
1. **仓位管理**: 根据市场环境动态调整仓位
2. **分散投资**: 行业分散、个股分散、时间分散
3. **止损策略**: 技术止损、基本面止损、时间止损
4. **对冲工具**: 股指期货、期权等衍生品对冲

### 风险预警指标
- **市场情绪**: MSCI指数异常、恐慌指数VIX
- **资金流向**: 北向资金、融资融券余额变化
- **估值水平**: 市场PE/PB分位数、风险溢价
- **技术指标**: 技术破位、量能萎缩

请提供结构化的风险分析，包括风险识别、风险评估、风控建议等。
"""
        
        return prompt
    
    @staticmethod
    def get_market_timing_prompt(market_data: Dict[str, Any]) -> str:
        """获取择时分析提示词"""
        current_month = datetime.now().month
        season_context = ""
        
        if current_month in [1, 2, 3]:
            season_context = "当前处于春季，历史上A股常有'春季躁动'行情，关注政策预期和资金回流。"
        elif current_month in [4, 5, 6]:
            season_context = "当前处于春夏之交，需警惕'五穷六绝'的季节性调整风险。"
        elif current_month in [7, 8, 9]:
            season_context = "当前处于夏秋季节，关注'七翻身'和'金九银十'的季节性机会。"
        else:
            season_context = "当前处于四季度，年末资金面和业绩预期对市场影响较大。"
        
        prompt = f"""
## ⏰ A股市场择时分析

### 季节性特征
{season_context}

### 择时要素
1. **政策周期**: 重要会议、政策发布时间窗口
2. **资金周期**: 月末、季末、年末资金面变化
3. **业绩周期**: 财报披露期、业绩预告期
4. **事件周期**: 重大事件、节假日效应

### 技术择时信号
- **趋势信号**: 均线系统、趋势线突破
- **动量信号**: MACD、RSI等动量指标
- **情绪信号**: 市场情绪指数、投资者情绪
- **资金信号**: 成交量、资金流向变化

请结合当前市场环境，提供择时分析和操作建议。
"""
        
        return prompt
    
    @staticmethod
    def get_sector_rotation_prompt(market_data: Dict[str, Any]) -> str:
        """获取板块轮动分析提示词"""
        prompt = """
## 🔄 A股板块轮动分析

### 轮动规律
1. **政策驱动**: 政策利好板块率先启动
2. **资金推动**: 增量资金流入推动板块轮动
3. **业绩支撑**: 业绩改善板块获得持续关注
4. **估值修复**: 低估值板块的价值回归

### 轮动周期
- **短期轮动**: 1-2周的热点切换
- **中期轮动**: 1-3个月的主题投资
- **长期轮动**: 半年以上的趋势性机会

### 识别信号
1. **IRSI排名变化**: 行业相对强度指数的排名变化
2. **资金流向**: 行业资金净流入流出情况
3. **估值比较**: 行业估值的相对吸引力
4. **政策催化**: 行业政策的边际变化

### 操作策略
- **顺势而为**: 跟随强势板块的趋势
- **逆向思维**: 关注超跌板块的反弹机会
- **均值回归**: 利用板块间的估值差异
- **主题投资**: 把握政策主题的投资机会

请基于当前IRSI数据，分析板块轮动趋势和投资机会。
"""
        
        return prompt

class PromptOptimizer:
    """提示词优化器"""
    
    @staticmethod
    def optimize_for_market_condition(base_prompt: str, market_condition: str) -> str:
        """根据市场状况优化提示词"""
        if market_condition == "牛市":
            optimization = """
### 牛市特征分析要求
- 重点关注成长性和想象空间
- 适当提高风险偏好
- 关注新兴产业和概念股
- 注意估值泡沫风险
"""
        elif market_condition == "熊市":
            optimization = """
### 熊市特征分析要求
- 重点关注防御性和安全边际
- 降低风险偏好
- 关注低估值蓝筹股
- 严格控制仓位和风险
"""
        else:  # 震荡市
            optimization = """
### 震荡市特征分析要求
- 重点关注结构性机会
- 平衡风险和收益
- 关注板块轮动机会
- 灵活调整投资策略
"""
        
        return base_prompt + optimization
    
    @staticmethod
    def add_risk_warning(prompt: str) -> str:
        """添加风险提示"""
        risk_warning = """

### ⚠️ 重要风险提示
- 本分析仅供参考，不构成投资建议
- 股市有风险，投资需谨慎
- 请根据自身风险承受能力做出投资决策
- 建议分散投资，控制仓位
- 及时关注市场变化，动态调整策略
"""
        
        return prompt + risk_warning